/**
 * @file   carpetas.c
 * @author Carlos Hernández García <carloshergar@usal.es>
 * @date   Fri Apr  10 2009  
 *
 * Copyright (c) 2009 Carlos Hernández García
 *
 * @brief See carpetas.h
 *
 * 
 * Carlos Hernández García                          \n
 * <carloshergar@usal.es>                             \n
 * Universidad de Salamanca                         \n
 * Plaza de la Merced s/n                           \n
 * E-37008 Salamanca, SPAIN                         \n
 */
/********************************************************************************/

#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string>
#include "../include/carpetas.h"

/** 
 * This function looks if a folder exists
 * @param nombreFichero name of the folder we are looking for
 */
int ExisteFichero(char *nombreFichero)
{
	/*Función que verifica si existe o no el fichero llamado <nombreFichero> */

	struct stat stFileInfo;
	int intStat;

  	// Llamada para recoger los atributos del fichero
	intStat = stat(nombreFichero,&stFileInfo);
	if(intStat == 0)
		return 1;
	else
		return 0;
}

/** 
 * This function creates the new folder with permissions (0777). The outputs of the program will be held in it.
 * The name of the folder is <foldername>#, where # is the number that corresponds to the new folder
 * @return 1: if it is correctly created, 0: it can not be created because exceeds the limit of folders
 * @param LIMITE_FICHEROS maximun number of folders that we are going to create
 */
int CrearCarpeta(int LIMITE_FICHEROS)//, char _inputname)
{
	/*Esta función creará una carpeta con todos los permisos abiertos (0777), respetando la siguiente nomenclatura: <nombregenerico>#, es decir, si nombregenerico="PIC", creará: PIC1, PIC2, PIC3.... en orden, comprobando cual es la última versión.
	Posteriormente, el proceso se moverá a esa carpeta.
	Valores que se le pasan:
		LIMITE_FICHEROS: numero de ficheros limite que admitiremos
	Valores de retorno:
		1: se ha creado correctamente;
		0: no se ha podido crear porque se excedio el numero de ficheros_limite
	*/

	char foldername[40]="PIC";//_inputname;	//Nombre genérico que asociamos a la carpeta #: <nombregenerico>#
	char nombrecarpeta[40];		//Nombre completo de la carpeta
	int k;

		
	k=1;
	sprintf(nombrecarpeta, "%s%d", foldername, k);
	
	while(ExisteFichero(nombrecarpeta) && k<=LIMITE_FICHEROS)
	{
		sprintf(nombrecarpeta, "%s%d", foldername, k);
		k++;
	}
	
	if(k<=LIMITE_FICHEROS)
	{
		if(mkdir(nombrecarpeta, 0777)!=0)
		{
			printf ("mkdir() failure; terminating");
 			exit(1);
		}
		//printf("Hemos creado la carpeta con el nombre: %s\n", nombrecarpeta);
		//Nos movemos al directorio que hemos creado
		if(chdir(nombrecarpeta))
		{	
			printf ("chdir() failure; terminating");
 			exit(1);
		}
		//printf ("%s\n",get_current_dir_name());
		return 1;
	}
	else
	{	printf("No hemos podido crear la carpeta al superar el limite de carpetas\n");
		return 0;
	}
}

